package model;


/**
 * This class handles all information and behavior that
 * pertains to the roll of employee in this program.
 * 
 * @author Tristan D. Boucher
 * @version Commit #22 9/14/2013
 */
public class User extends AbstractUser
{
  /**
   * Constructs a user from the given information upon registration.
   * 
   * @param the_first_name The user's first name.
   * @param the_last_name The user's last name.
   * @param the_id_number The user's student id number.
   * @param the_password The user's password.
   */
  public User(final String the_first_name,
              final String the_last_name,
              final String the_id_number,
              final String the_password)
  {
    super(the_first_name, the_last_name, the_id_number, the_password);
  }

  /**
   * Constructs a user from the given information upon registration.
   * 
   * @param the_first_name The user's first name.
   * @param the_last_name The user's last name.
   * @param the_id_number The user's student id number.
   * @param the_password The user's password.
   * @param the_admin_choice True to make admin, false to do nothing special.
   * false should never be used in this case as it is simply a specific constructor.
   */
  public User(final String the_first_name,
              final String the_last_name,
              final String the_id_number,
              final String the_password,
              final boolean the_admin_choice)
  {
    this(the_first_name, the_last_name, the_id_number, the_password);

    if (the_admin_choice)
    {
      promoteAdmin();      
    }
  }

  /**
   * Constructor.
   * 
   * @param the_classes The list of classes that this person is able to tutor.
   *                    May be null if empty such as, at this time, a program
   *                    assistant.
   * @param the_time_slots The array of TimeSlot type lists passes that contains
   *                    the hours one may work.
   * @param the_tutor_choice The choice of whether this user is a tutor or not.
   * @param the_admin_choice The choice of whether this user is an admin or not.
   * @param the_scheduler_choice The choice of whether this user is allowed to 
   *                    modify the schedule or not.
   */
  //  public User(final List<Classes> the_classes,
  //              final List<TimeSlot>[] the_time_slots,
  //              final boolean the_tutor_choice,
  //              final boolean the_admin_choice,
  //              final boolean the_scheduler_choice)
  //  {
  //    super(the_classes, the_time_slots, the_tutor_choice, 
  //          the_admin_choice, the_scheduler_choice);
  //  }

  /**
   * Returns this persons full name.
   * 
   * @return Name: "First Last"
   */
  public String toString()
  {
    return my_first_name + " " + my_last_name;
  }
}
